home *** CD-ROM | disk | FTP | other *** search
/ Turnbull China Bikeride / Turnbull China Bikeride - Disc 2.iso / ACORNUSERS / EMULATOR / EMUL6502 / Sources / StringCmp < prev    next >
Text File  |  1998-08-27  |  2KB  |  60 lines

  1. ;Alain BROBECKER (aka baah/Arm's Tech), 06jun1998.
  2. ;
  3. ;This program counts the number of identical chars in two strings, until one
  4. ;string contains the LF char. Also uses stack to save X counter. The result is
  5. ;then compared to the ones computed by hand, and if it is different it jumps
  6. ;at adress 0 (should contain  &00='brk'), else it ends with the 'brk' inside
  7. ;the code (and so the 6502 emulation went ok).
  8.  
  9.             #name       StringCmpX
  10.             #list
  11.             #base       &100-4      ;Start assembly here
  12.             #rw         &100        ;Load adress
  13.             #rw         &100        ;Exec adress
  14.  
  15.   ldx #&ff              ;Position in string
  16.   ldy #0                ;Nb of identical chars
  17. .compare_one
  18.   inx                   ;Pos+=1
  19.   lda string1,x         ;A=char1
  20.   cmp string2,x         ;Flags=char1-char2
  21.   bne not_the_same
  22.   iny                   ;One more identical char
  23.   cmp #&a               ;Flags=char1-&a=char2-&a
  24.   beq lf_found          ;End if LF
  25.   bne compare_one
  26.  
  27. .not_the_same
  28.   cmp #&a               ;Flags=char1-&a
  29.   beq lf_found          ;End if LF
  30.   lda string2,x         ;A=char2
  31.   cmp #&a               ;Flags=char1-&a
  32.   bne compare_one       ;Next char
  33. .lf_found
  34. ;Here Y contains nb of identical chars, and X contains nb of chars-1,
  35. ;so X+1-Y shall contain nb of different chars. Compare all this with
  36. ;results computed by end.
  37.   inx
  38.   cpx #string2-string1
  39.   beq nb_chars_ok
  40. .error
  41.   jmp 0
  42. .nb_chars_ok
  43.   cpy #10               ;Nb of identical chars ok?
  44.   bne error
  45.   txa
  46.   sty for_sbc+1
  47.   sec
  48. .for_sbc
  49.   sbc #0                ;A=X+1-Y  (-1+C=0)
  50.   cmp #string2-string1-10 ;Nb of different chars ok?
  51.   bne error
  52.   brk
  53.  
  54. .string1
  55.   #b &65,&6D,&75,&6C,&36,&35,&30,&32,&20,&62,&79,&20,&62,&61,&61,&68
  56.   #b &2F,&41,&72,&6D,&27,&73,&20,&54,&65,&63,&68,&0A
  57. .string2
  58.   #b &45,&6D,&75,&36,&35,&63,&30,&32,&20,&66,&72,&6F,&6D,&20,&74,&68
  59.   #b &65,&20,&72,&75,&6D,&73,&54,&65,&61,&63,&6B,&0A
  60.